1. Field of the Invention
The present invention relates, in general, to distributed computing systems, and, more particularly, to software, systems, and methods for utilizing unused central processor unit (CPU) cycles during the running of a host web page or host user application to run a computing application or engine to perform analysis of work units for a distributed computing project.
2. Relevant Background
There is a growing demand for computers and computer systems with very large computational capacity, such as the type of computing capacity provided by modern supercomputers. The demand is arising out of such diverse projects and technical fields as astronomy and biotechnology. In the field of astronomy, a great amount of computing power is necessary to analyze all the data and signals being gathered continuously by telescopes and other devices. In the field of biotechnology, scientists utilize algorithms and large databases that require massive number crunching to help decipher genetic, protein, and other information. However, it is not economically feasible for each scientific project requiring supercomputer-type computing capacity to build or buy or even to maintain a computer system capable of meeting their needs.
Recently, distributed computing systems have been created in an attempt to provide large computing capacity to computing projects. Distributed computing involves the linking of numerous smaller computers that each provide a portion of their computing power to solve a portion of the larger computational project. Each part of the problem is typically called a “work unit” and is transferred over a network to a computer, such as a personal computer, a portable computer, a workstation, and the like, that is part of the distributed computing environment. The use of distributed computing is expected to grow because more and more computers are being networked together via the Internet and other communication networks and because these individual computers are becoming more and more powerful. This is creating a rapidly expanding pool of underutilized computers. Computer industry analysts estimate that well over 95 percent of the world's computational capacity is not utilized and is therefore wasted.
A number of applications of distributed computing are in use or are planned, but each of these applications still underutilizes the available computational capacity of the linked computers. For example, a network of volunteers has been recruited to provide their computers for use in searching through piles of signal information in an attempt to identify communication signals from extraterrestrials (see University of California Berkley's The Search for Extraterrestrial Intelligence (SETI) program). In this system, a project server sends a small spectrum of the received signals as work units to volunteer computers over the Internet and when their computer is idle, it performs computations on the work unit and transmits the results back to the project server. The volunteer's computer is typically considered “idle” when it enters screen saver mode or no applications are actively running on the computer. When the computer is operating an application or interacting with the operator, the computer is not considered idle and the analysis of the work unit is halted. Any excess capacity that might be available when an application is running or when the computer is interacting with the operator is not utilized for the distributed computing operations.
More recently, some online service companies have announced plans to only continue their free services if their subscribers agree to allow their computers to be used for distributed computing. Again, the distributed computing is only performed when the computer is considered idle, which means the distributed computing is only performed when the operators are not actively using their computers. In both of these exemplary systems, significant efforts have been made by the designers to only perform the calculations during down or idle times such that the user's computing capacity is not reduced at all when they are interacting with the computer or running their user applications.
Another problem with many existing distributed computing systems is that the systems force the volunteer or user to be responsible for properly running the distributed computing engine. In the extraterrestrial computation example, the user must volunteer their computer for use in performing distributed computing, such as by first visiting a specific web site. Then, the user must take steps to download the distributed computing application onto their computer from a server run by the distributed computing project. The user may be responsible for running the application to accept work units from the project server. Further, the user is often responsible for making sure that the running application is the most recent version and has been properly updated to correctly perform the required calculations.
Hence, there remains a need for an improved method and system for performing distributed or grid computing that limits or eliminates the need for user actions and that is more effective in utilizing the unused capacity of networked computers. Preferably, such a method and system would be relatively invisible to the user of a computer that is part of the distributed computing system but would also tap into the computing capacity on an ongoing basis, i.e., utilize a large portion of the CPU cycles that are wasted even when an operator is running a user application or otherwise actively interacting with the computer.